package com.xtck.ha.common.core.web.service;


import com.xtck.ha.common.core.domain.R;
import com.xtck.ha.common.core.web.page.TableDataInfo;

import java.util.Collection;
import java.util.List;

public interface IBaseService<T> {

    int DEFAULT_BATCH_SIZE = 1000;
    
    /**
     * 根据id查询
     *
     * @param id 主键
     * @return T
     */
    T selectTById(Long id);

    T selectTById(String id);

    /**
     * 查询列表
     *
     * @param t
     * @return T集合
     */
    List<T> selectTList(T t);


    /**
     * 查询列表带分页
     *
     * @param t
     * @return T集合
     */
    TableDataInfo selectTListPage(T t);


    /**
     * 查询总数
     *
     * @param t
     * @return 数量
     */
    long count(T t);

    /**
     * 新增
     *
     * @param t
     * @return 结果
     */
    int insertT(T t);

    Integer saveBatch(Collection<T> entityList);

    /**
     * 修改
     *
     * @param t
     * @return 结果
     */
    int updateT(T t);

    /**
     * 批量删除
     *
     * @param ids 需要删除的主键集合
     * @return 结果
     */
    int deleteTByIds(Long[] ids);
    int deleteTByIds(String[] ids);

    int deleteTList(T t);

    /**
     * 删除信息
     *
     * @param id 主键
     * @return 结果
     */
    int deleteTById(Long id);
    int deleteTById(String id);


    /**
     * 删除表所有信息
     * @return int
     * @Author 何广森
     * @Date   2025/6/12 15:17
     */
    int deleteTableInfo();


    List selectBySql(String sql);

    List selectBySql(String sql,Class c);

    R selectRBySql(String sql);

}
